package principalcontrole;


import administracao.pedido_de_compra_fornecedor;
import administracao.verifica_pedido_compra;
import cadastro.cliente;
import cadastro.fornecedor;
import cadastro.funcionario;
import cadastro.produto;
import cadastro.produtoFunciona;
import java.awt.HeadlessException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import menu.Menu_Compra;
import menu.caixa;
import utilitario.Arquivo;
import utilitario.Funcionario;
import utilitario.juros;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author marcos
 */
public class principal extends javax.swing.JFrame implements Runnable{

    //Funcionario que foi logado será armazenado na variavel funcionarioLogado
    public Funcionario funcionarioLogado = new Funcionario();
   private static Object lock = new Object();
   double ler_juros = 0;

   juros cad_juros = new juros();


    /**
     * Creates new form principal
     */
    private principal() {
        initComponents();
        setResizable(false);
    }

     public principal(Funcionario func) {
         this();
         funcionarioLogado = func;

         //Limitando acesso dos funcionarios
         switch(funcionarioLogado.getNivel_de_acesso()){
             //Caso seja vendedor
             case 0:{
                 bt_Fornecedor.setEnabled(false);
                 bt_funcionario.setEnabled(false);
                 bt_Caixa.setEnabled(false);
                 bt_PedidoCompra.setEnabled(false);
                 bt_VerificadorPedido.setEnabled(false);
                 bt_Gerenciamento.setEnabled(false);
                 bt_Produto.setEnabled(false);
                    bt_juros.setEnabled(false);
                 break;
             }
            //Caso seja caixa
             case 1:{
                 bt_Fornecedor.setEnabled(false);
                 bt_funcionario.setEnabled(false);
                 bt_MenuCompra.setEnabled(false);
                 bt_Cliente.setEnabled(false);
                 bt_PedidoCompra.setEnabled(false);
                 bt_VerificadorPedido.setEnabled(false);
                 bt_Gerenciamento.setEnabled(false);
                 bt_Produto.setEnabled(false);
                    bt_juros.setEnabled(false);
                 break;
             }
            //caso seja comprador
             case 2:{
                 bt_Fornecedor.setEnabled(false);
                 bt_funcionario.setEnabled(false);
                 bt_Caixa.setEnabled(false);
                 bt_MenuCompra.setEnabled(false);
                 bt_VerificadorPedido.setEnabled(false);
                 bt_Gerenciamento.setEnabled(false);
                 bt_Produto.setEnabled(false);
                 bt_Cliente.setEnabled(false);
                    bt_juros.setEnabled(false);
                 break;
             }
             //caso seja recebedor
             case 3:{
                 bt_Fornecedor.setEnabled(false);
                 bt_funcionario.setEnabled(false);
                 bt_Caixa.setEnabled(false);
                 bt_PedidoCompra.setEnabled(false);
                 bt_MenuCompra.setEnabled(false);
                 bt_Gerenciamento.setEnabled(false);
                 bt_Cliente.setEnabled(false);
                 bt_juros.setEnabled(false);
                 break;
             }
             //caso seja financeiro
             case 4:{
                 bt_Fornecedor.setEnabled(false);
                 bt_funcionario.setEnabled(false);
                 bt_Caixa.setEnabled(false);
                 bt_PedidoCompra.setEnabled(false);
                 bt_VerificadorPedido.setEnabled(false);
                 bt_MenuCompra.setEnabled(false);
                 bt_Produto.setEnabled(false);
                 bt_Cliente.setEnabled(false);
                 break;
             }
            /*caso não seja nenhum destes casos quer que é o administrador
             * Todas as funções liberadas
             * Único a cadastrar funcionarios e fornecedores
             */
         }
     }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        bt_funcionario = new javax.swing.JButton();
        bt_Cliente = new javax.swing.JButton();
        bt_Produto = new javax.swing.JButton();
        bt_Fornecedor = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        bt_PedidoCompra = new javax.swing.JButton();
        bt_VerificadorPedido = new javax.swing.JButton();
        bt_Gerenciamento = new javax.swing.JButton();
        Vendas = new javax.swing.JPanel();
        bt_MenuCompra = new javax.swing.JButton();
        bt_Caixa = new javax.swing.JButton();
        bt_juros = new javax.swing.JButton();
        texto_titulo = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Sistema");
        setLocationByPlatform(true);
        getContentPane().setLayout(null);

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Cadastro"));
        jPanel1.setOpaque(false);

        bt_funcionario.setIcon(new javax.swing.ImageIcon(getClass().getResource("/funcionario.png"))); // NOI18N
        bt_funcionario.setToolTipText("Funcionario");
        bt_funcionario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_funcionarioActionPerformed(evt);
            }
        });

        bt_Cliente.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cliente.png"))); // NOI18N
        bt_Cliente.setToolTipText("Cliente");
        bt_Cliente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_ClienteActionPerformed(evt);
            }
        });

        bt_Produto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/produto.png"))); // NOI18N
        bt_Produto.setToolTipText("Produto");
        bt_Produto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_ProdutoActionPerformed(evt);
            }
        });

        bt_Fornecedor.setIcon(new javax.swing.ImageIcon(getClass().getResource("/fornecedor.png"))); // NOI18N
        bt_Fornecedor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_FornecedorActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(6, 6, 6)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(bt_Fornecedor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(bt_funcionario, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(bt_Cliente, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(bt_Produto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(7, 10, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(bt_Fornecedor, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(bt_funcionario)
                .addGap(5, 5, 5)
                .addComponent(bt_Cliente)
                .addGap(5, 5, 5)
                .addComponent(bt_Produto))
        );

        getContentPane().add(jPanel1);
        jPanel1.setBounds(20, 210, 90, 230);

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Administrativo"));
        jPanel2.setOpaque(false);

        bt_PedidoCompra.setText("Pedido de Compra");
        bt_PedidoCompra.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_PedidoCompraActionPerformed(evt);
            }
        });

        bt_VerificadorPedido.setText("Verificador de Pedido");
        bt_VerificadorPedido.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_VerificadorPedidoActionPerformed(evt);
            }
        });

        bt_Gerenciamento.setText("Relatorios");
        bt_Gerenciamento.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_GerenciamentoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(18, 18, 18)
                .addComponent(bt_PedidoCompra)
                .addGap(18, 18, 18)
                .addComponent(bt_VerificadorPedido)
                .addGap(18, 18, 18)
                .addComponent(bt_Gerenciamento, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(33, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(bt_PedidoCompra, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE)
                    .addComponent(bt_VerificadorPedido, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(bt_Gerenciamento, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );

        getContentPane().add(jPanel2);
        jPanel2.setBounds(210, 220, 490, 90);

        Vendas.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Vendas"));
        Vendas.setOpaque(false);

        bt_MenuCompra.setText("Menu de Compra");
        bt_MenuCompra.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_MenuCompraActionPerformed(evt);
            }
        });

        bt_Caixa.setText("Caixa");
        bt_Caixa.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_CaixaActionPerformed(evt);
            }
        });

        bt_juros.setText("Cadastrar Juros");
        bt_juros.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_jurosActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout VendasLayout = new javax.swing.GroupLayout(Vendas);
        Vendas.setLayout(VendasLayout);
        VendasLayout.setHorizontalGroup(
            VendasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(VendasLayout.createSequentialGroup()
                .addGap(18, 18, 18)
                .addComponent(bt_MenuCompra)
                .addGap(18, 18, 18)
                .addComponent(bt_Caixa, javax.swing.GroupLayout.PREFERRED_SIZE, 102, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(bt_juros, javax.swing.GroupLayout.PREFERRED_SIZE, 167, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(42, Short.MAX_VALUE))
        );
        VendasLayout.setVerticalGroup(
            VendasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(VendasLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(VendasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(bt_MenuCompra, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE)
                    .addComponent(bt_Caixa, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(bt_juros, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );

        getContentPane().add(Vendas);
        Vendas.setBounds(210, 350, 490, 90);

        texto_titulo.setFont(new java.awt.Font("Cooper Black", 0, 36)); // NOI18N
        texto_titulo.setForeground(new java.awt.Color(0, 204, 51));
        texto_titulo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/editar.png"))); // NOI18N
        texto_titulo.setText("Painel de Controle");
        getContentPane().add(texto_titulo);
        texto_titulo.setBounds(230, 50, 460, 90);

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/fundo.png"))); // NOI18N
        jLabel1.setText("jLabel1");
        jLabel1.setMaximumSize(new java.awt.Dimension(800, 600));
        jLabel1.setMinimumSize(new java.awt.Dimension(800, 600));
        jLabel1.setPreferredSize(new java.awt.Dimension(800, 600));
        getContentPane().add(jLabel1);
        jLabel1.setBounds(0, 0, 810, 600);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-816)/2, (screenSize.height-639)/2, 816, 639);
    }// </editor-fold>//GEN-END:initComponents

    private void bt_ProdutoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_ProdutoActionPerformed
        // TODO add your handling code here:
        produtoFunciona p = new produtoFunciona(this);
        p.setVisible(true);
        this.setEnabled(false);

    }//GEN-LAST:event_bt_ProdutoActionPerformed

    private void bt_funcionarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_funcionarioActionPerformed
        // TODO add your handling code here:
        new funcionario(this).setVisible(true);

    }//GEN-LAST:event_bt_funcionarioActionPerformed

    private void bt_ClienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_ClienteActionPerformed
        // TODO add your handling code here:
        cliente c = new cliente(this);

        c.setVisible(true);
        this.setEnabled(false);

    }//GEN-LAST:event_bt_ClienteActionPerformed

    private void bt_PedidoCompraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_PedidoCompraActionPerformed
        // TODO add your handling code here:
     final  pedido_de_compra_fornecedor pcf = new pedido_de_compra_fornecedor(this);
         pcf.setVisible(true); this.setEnabled(false);

    }//GEN-LAST:event_bt_PedidoCompraActionPerformed

    private void bt_VerificadorPedidoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_VerificadorPedidoActionPerformed
        // TODO add your handling code here:
      final  verifica_pedido_compra vpc = new verifica_pedido_compra(this);

        vpc.setVisible(true);

        this.setEnabled(false);

       // new verifica_pedido_compra().setVisible(true);
    }//GEN-LAST:event_bt_VerificadorPedidoActionPerformed

    private void bt_MenuCompraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_MenuCompraActionPerformed
        // TODO add your handling code here:
       Menu_Compra mc = new Menu_Compra(this);

       mc.setVisible(true);

       this.setEnabled(false);



    }//GEN-LAST:event_bt_MenuCompraActionPerformed

    private void bt_jurosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_jurosActionPerformed
        // TODO add your handling code here:

        try{

        ler_juros = Double.parseDouble(JOptionPane.showInputDialog("Digite o parametro de juros"));

        cad_juros.setJuros(ler_juros);

         Arquivo.armazenarJuros(cad_juros);


        }catch(HeadlessException | NumberFormatException | NullPointerException erro){

              JOptionPane.showMessageDialog(null,"Digite apenas numeros.");

        }

    }//GEN-LAST:event_bt_jurosActionPerformed

    private void bt_GerenciamentoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_GerenciamentoActionPerformed
        // TODO add your handling code here:

        relatorio r = new relatorio(this);
        r.setVisible(true);

        this.setEnabled(false);
    }//GEN-LAST:event_bt_GerenciamentoActionPerformed

    private void bt_FornecedorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_FornecedorActionPerformed
        // TODO add your handling code here:h
        fornecedor f = new fornecedor(this);
        f.setVisible(true);

    }//GEN-LAST:event_bt_FornecedorActionPerformed

    private void bt_CaixaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_CaixaActionPerformed
        // TODO add your handling code here:
        caixa c = new caixa(this);
        c.setVisible(true);
        this.setEnabled(false);
        
    }//GEN-LAST:event_bt_CaixaActionPerformed

    public void run(){

             final  pedido_de_compra_fornecedor pcf = new pedido_de_compra_fornecedor(this);

                 System.out.println("Criando");
                        synchronized (lock) {
                            while (pcf.isVisible()) {
                                try {
                                    Thread.sleep(1000);
                                } catch (InterruptedException ex) {
                                    Logger.getLogger(funcionario.class.getName()).log(Level.SEVERE, null, ex);
                                }
                            }
                        }

                        return;
                    }





    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new principal().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel Vendas;
    private javax.swing.JButton bt_Caixa;
    private javax.swing.JButton bt_Cliente;
    private javax.swing.JButton bt_Fornecedor;
    private javax.swing.JButton bt_Gerenciamento;
    private javax.swing.JButton bt_MenuCompra;
    private javax.swing.JButton bt_PedidoCompra;
    private javax.swing.JButton bt_Produto;
    private javax.swing.JButton bt_VerificadorPedido;
    private javax.swing.JButton bt_funcionario;
    private javax.swing.JButton bt_juros;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JLabel texto_titulo;
    // End of variables declaration//GEN-END:variables
}
